import CCRequest from "./request";
import { BASE_URL, TIME_OUT } from "./request/config";

/**
 * 创建新的实例对象，没有实例级别的拦截器
 */
const noInstanceInterceptorsReq = new CCRequest({
  baseURL: BASE_URL,
  timeout: TIME_OUT,
});

/**
 * 2021年9月20日 15:37:35 chanchaw
 * 这里可以创建多个 CCRequest 的实例对象，每个对象使用不同的 baseURL 可访问不同的后端服务
 * 创建实例对象时传入的增强配置对象 - 下面 new CCRequest 中传入的参数就是该增强配置对象
 * 该对象中可设置本实例专有的拦截器
 */
const withInstanceInterceptorsReq = new CCRequest({
  baseURL: BASE_URL, // 要和 vue.config.js 中跨域设置的前缀保持一致
  timeout: TIME_OUT,
  interceptors: {
    requestInterceptor: (config) => {
      console.log("实例级别的请求拦截器");
      return config;
    },
    requestInterceptorCatch: (err) => {
      console.log("实例级别的请求异常拦截器");
      return err;
    },

    responseInterceptor: (res) => {
      console.log("实例级别的响应拦截器");
      return res;
    },
    responseInterceptorCatch: (err) => {
      console.log("实例级别的响应异常拦截器");
      return err;
    },
  },
});

export interface ResponseResult {
  code: number;
  msg: string;
  data: any;
}

export { noInstanceInterceptorsReq, withInstanceInterceptorsReq };
